<?php

/**
 * Description of CommandsReader
 *
 * @author englinx
 */
class CommandsReader {

    private $updateStack; //Texto del js UpdateStack
    private $dataContent; //Guarda en un array el contenido de Data

    public function __construct() {
        $this->updateStack = "";
        $this->dataContent = array();
    }

    public function readData($dataPath="../Data") {
        $files = scandir($dataPath);
        $this->dataContent = array_slice($files, 2);
        return $this->dataContent;
    }

    public function readCommandJS($filePath="../Data/file.js") {
        $fileContent = file($filePath);
        $r = trim($fileContent[0], "\x00..\x1F"); //\x00..\x1F es el grupo de caracteres de sistema que se quieren quitar :)
        $command = substr($r, 2);
        return $command;
    }

    public function buildUpdateStack() {
        //Eliminar el archivo con la info antigua
        unlink("../Data/02UpdateStack.js");
        //-----------------------------------------------
        //Crear archivo con la info nueva----------------
        $gestor = fopen("../Data/02UpdateStack.js", 'x+');
        
        $content='/**
 * Esta función permite actualizar el Stack
 */
function updateStack(){';
        
        
        $this->readData("../Data"); //Llena a $this->dataContent con los nombres de archivos de la carpeta Data
        $aux=0;
        foreach ($this->dataContent as $file){
            $p=substr($file, 0,1);
            if($p!="."&&$p!="0"){
		//Evita leer el .DS_Store de los servidores en equipos Mac y los archivos que empiezan con 0. Lee el nombre del comando
            	$c=$this->readCommandJS($filePath="../Data/".$file);
            
                if($aux==0){
                    $content.='if(arguments[0]=="0:'.$c.'\n"){
                    '.$c.';
                    }';
                    $aux++;
                }
                else{
                    $content.='else if(arguments[0]=="0:'.$c.'\n"){
                        '.$c.';
                        }';
                }
            }
        }
        
        $content.='else{
                    var aux=new Array(2); 
                    aux=arguments[0].split(":");
                    if(aux[1]!=""&&aux[1]!="\n"){
                    	stack.push(aux[1]);
                    }
                    
                    updateTerminal();
                    document.getElementById("divContent").scrollTop=20*stack.length
               }
}';
        
        fwrite($gestor, $content);
        fclose($gestor);
        //-----------------------------------------------
    }

}

?>
